package 左叶子之和;


import java.util.ArrayDeque;

public class Solution {
    /*
    给定二叉树的根节点 root ，返回所有左叶子之和。
     */
    public int sumOfLeftLeaves(TreeNode root) {
        // 迭代法
        // 使用层序遍历
        if(root == null) return 0;
        ArrayDeque<TreeNode> queue = new ArrayDeque<>();
        queue.offer(root);
        int sum = 0;
        while (!queue.isEmpty()) {
            TreeNode p = queue.poll();
            if(p.left != null) {
                queue.offer(p.left);
                if(p.left.left == null && p.left.right == null )
                    sum += p.left.val;
            }
            if(p.right != null) {
                queue.offer(p.right);
            }
        }
        return sum;
    }
}